home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / date.lha / Date / C / doc / Date.doc next >
Text File  |  1994-11-30  |  61KB  |  2,559 lines

  1. TABLE OF CONTENTS
  2.  
  3. Date/--background--
  4. Date/--history--
  5. Date/_DateInit
  6. Date/GregorianDayDiff
  7. Date/GregorianDayGreater
  8. Date/GregorianDaysAfterWeekday
  9. Date/GregorianDaysBeforeWeekday
  10. Date/GregorianDaySmaller
  11. Date/GregorianDiffDate
  12. Date/GregorianEaster
  13. Date/GregorianLeapYear
  14. Date/GregorianMonthDays
  15. Date/GregorianMoonAge
  16. Date/GregorianToJD
  17. Date/GregorianWeek
  18. Date/GregorianWeekday
  19. Date/GregorianYearDays
  20. Date/GSYearToJD
  21. Date/GYearToScaliger
  22. Date/HeisDayDiff
  23. Date/HeisDayGreater
  24. Date/HeisDaysAfterWeekday
  25. Date/HeisDaysBeforeWeekday
  26. Date/HeisDaySmaller
  27. Date/HeisDiffDate
  28. Date/HeisLeapYear
  29. Date/HeisMonthDays
  30. Date/HeisToJD
  31. Date/HeisWeek
  32. Date/HeisWeekday
  33. Date/HeisYearDays
  34. Date/HSYearToJD
  35. Date/HYearToScaliger
  36. Date/JDtoMJD
  37. Date/JDToTime
  38. Date/JSYearToJD
  39. Date/JulianDayDiff
  40. Date/JulianDayGreater
  41. Date/JulianDaysAfterWeekday
  42. Date/JulianDaysBeforeWeekday
  43. Date/JulianDaySmaller
  44. Date/JulianDiffDate
  45. Date/JulianLeapYear
  46. Date/JulianMonthDays
  47. Date/JulianToJD
  48. Date/JulianWeek
  49. Date/JulianWeekday
  50. Date/JulianYearDays
  51. Date/JYearToScaliger
  52. Date/LMT
  53. Date/MJDtoJD
  54. Date/ScaligerYearToG
  55. Date/ScaligerYearToH
  56. Date/ScaligerYearToJ
  57. Date/SecToTime
  58. Date/TimeToJD
  59. Date/TimeToSec
  60. Date/TimeZoneFactor
  61. Date/--background--                                       Date/--background--
  62.  
  63.    NAME
  64.     Date -- This module was designed to help calc. calendar dates (V33)
  65.  
  66.    FUNCTION
  67.     I know about the date routines in the Amiga-OS(TM), but I decided
  68.     not to use them because of their limited functionalities and of
  69.     the portability of this module!
  70.  
  71.    NOTES
  72.     A tropical year is 365.2422 days! / 365d, 5h, 48min, 46sec
  73.     A moon month is 29.53059 days! / 29d, 12h, 44min, 2.9 sec
  74.     A moon phase is 7.38265 days!
  75.  
  76.     (German) Books which helped me creating this library:
  77.         Kleine Naturwissenschaftliche Bibliothek, Band 23
  78.         Ewige Kalender
  79.         A.W. Butkewitsch & M.S. Selikson
  80.         5. Auflage
  81.         Teubner, Leipzig 1974
  82.         ISBN 3-322-00393-0
  83.  
  84.         Tag und Woche, Monat und Jahr: eine Kulturgeschichte des
  85.         Kalenders
  86.         Rudolf Wendorff
  87.         Westdeutscher, Opladen 1993
  88.         ISBN 3-531-12417-X
  89.  
  90.         Kalender und Chronologie: Bekanntes & Unbekanntes aus der
  91.         Kalenderwissenschaft
  92.         Heinz Zemanek
  93.         4. Auflage
  94.         Oldenbourg, München 1987
  95.         ISBN 3-486-20447-5
  96.  
  97.         Meyers Handbuch
  98.         über das Weltall
  99.         Karl Schaifers & Gerhard Traving
  100.         5. Auflage
  101.         Bibliographisches Institut Mannheim 1973
  102.         ISBN 3-411-00940-3
  103.  
  104.     (English) Books which helped me creating this library:
  105.         Mathematical Astronomy with a Pocket Calculator
  106.         Aubrey Jones Fras
  107.         unknown(first) Edition
  108.         David & Charles Newton Abbot, London 1978
  109.         ISBN 0-7153-7675-6
  110.  
  111.    COPYRIGHT
  112.     This module is Copyright 1994 by Kai Hofmann - all rights reserved!
  113.     For private use, Public Domain, Gift Ware, Freeware and Shareware
  114.     you could use this module under following conditions:
  115.     - You send me a little gift (money is very welcome :)
  116.         For Bank Account see below - but *ONLY* send in DM
  117.         to this Bank Account!!!
  118.       Other nice gifts: all Amiga hardware, and I am searching for a
  119.       good old 1541 (C64 floppy)
  120.     - You include a notice in your product, that you use this library
  121.       and that it is Copyright by Kai Hofmann!
  122.     If you want to redistribute this library read the following points:
  123.     - Redistribution warranty is given to:
  124.         Fred Fish for his great Amiga-Software-Library
  125.         The German SAAR AG PD-Library
  126.         The German AMOK PD-Library
  127.         All public accessible INTERNET servers and PHONE boxes!
  128.         All others who do NOT take more than DM 5.- for one disk
  129.         ALL others who do NOT take more than DM 50.- for one CD
  130.     For commercial use send me DM 200.-
  131.     But if you are Apple or Microsoft you have to send (20000.- US$)
  132.  
  133.    DISCLAIMER
  134.  
  135.       THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
  136.    APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
  137.    HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
  138.    OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
  139.    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  140.    PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  141.    PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
  142.    COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  143.  
  144.       IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  145.    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE
  146.    PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
  147.    GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  148.    USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
  149.    OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
  150.    THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  151.    PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  152.    POSSIBILITY OF SUCH DAMAGES.
  153.  
  154.    ADDITIONAL INFORMATIONS
  155.     I have tried to make portable/useful and I hope bugfree software
  156.     for eternity - but this seems to be impossible (sorry!) :)
  157.     So I hope you will pay a fee for this.
  158.  
  159.    AUTHOR
  160.     Kai Hofmann
  161.     Arberger Heerstraße 92
  162.     28307 Bremen
  163.     Germany
  164.     EMail: i07m@zfn.uni-bremen.de
  165.     (no phone - I hate it!)
  166.  
  167.     Bank account : 1203 7503
  168.     Account owner: Kai Hofmann
  169.     Bank code    : 290 501 01
  170.     Bank name    : Sparkasse in Bremen
  171.  
  172.     THANX
  173.     Thanx are going to the following people:
  174.     Danial Armor        - For his hint about the Oberon-2 SHORT
  175.                   command
  176.     Heinz Zemanek        - For his great book
  177.     Christian Schaefer    - For spending time on this lib with his
  178.                   Borland C++ 4.0 compiler
  179.     Rita Reichl        - For correcting my bad english ;-)
  180.     Jim Rickman        - For reporting a bug
  181.  
  182. Date/--history--                                             Date/--history--
  183.  
  184.    NAME
  185.     history -- This is the development history of the Date module
  186.  
  187.    VERSION
  188.     $VER: Date 33.089 (13.11.1994)
  189.  
  190.    HISTORY
  191.     16.01.1994 -    Procedures: JulianLeapYear(), GregorianLeapYear() &
  192.             HeisLeapYear() initiated.
  193.     22.01.1994 -    Procedures: JulianMonthDays(), GregorianMonthDays(),
  194.             HeisMonthDays(), JulianYearDays(),
  195.             GregorianYearDays(), HeisYearDays(), JulianDayDiff(),
  196.             GregorianDayDiff(), HeisDayDiff(),
  197.             JulianDaySmaller(), GregorianDaySmaller(),
  198.             HeisDaySmaller(), JulianWeekday(),
  199.             GregorianWeekday(), HeisWeekday(),
  200.             JulianDaysBeforeWeekday(),
  201.             GregorianDaysBeforeWeekday(),
  202.             HeisDaysBeforeWeekday(), JulianDaysAfterWeekday(),
  203.             GregorianDaysAfterWeekday(), HeisDaysAfterWeekday(),
  204.             JulianDiffDate(), FreeDate() initiated.
  205.             Types: Weekdays, Date, DatePtr initiated.
  206.             Vars of Gregorian reform initiated
  207.             (for changing to different countries)
  208.     23.01.1994 -    Procedures: JulianDiffDate() finished,
  209.             GregorianDiffDate(), HeisDiffDate(),
  210.             JYearToScaliger(), GYearToScaliger(),
  211.             HYearToScaliger(), ScaligerYearToJ(),
  212.             ScaligerYearToG(), ScaligerYearToH(), JSYearToJD(),
  213.             GSYearToJD(), HSYearToJD(), JDtoMJD(), MJDtoJD(),
  214.             JulianToJD(), GregorianToJD(), HeisToJD(),
  215.             TimeToJD(), JDToTime(), FreeTime() initiated.
  216.             Types: Time, TimePtr initiated.
  217.     28.01.1994 -    Procedures: GregorianMoonAge(), MoonMonthAge(),
  218.             GregorianEaster() initiated.
  219.     30.01.1994 -    Procedures: JulianDiffDate(), GregorianDiffDate(),
  220.             HeisDiffDate(), JDToTime(), GregorianEaster() edited
  221.             (changing return value from ptr to VAL variables).
  222.             Procedures: FreeDate(), FreeTime() deleted.
  223.             Types: Date, DatePtr, Time, TimePtr deleted (not
  224.             longer needed, because of the procedure changes).
  225.             Procedures: GregorianMoonAge(), GregorianEaster()
  226.             changed    year parameter from CARDINAL to INTEGER
  227.             (this is more consistent to the rest of the library).
  228.             Bugs removed: GregorianWeekday(), HeisWeekday()
  229.             (before removing, the weekday for leapyears was
  230.             wrong)
  231.             Procedure: GregorianEaster() finished.
  232.     30.01.1994 -    Ported to Oberon-2
  233.     31.01.1994 -    Compiled with Oberon-2 V3.11
  234.     12.02.1994 -    Procedures: TimeZoneFactor(), LMT(), TimeToSec(),
  235.             SecToTime() initiated.
  236.             Version-String installed :)
  237.     12.02.1994 -    Starting translation to SAS C 6.51
  238.             Date.h translated
  239.     13.02.1994 -    Continuation of C translation
  240.     17.02.1994 -    New Oberon-2 Port, because yesterday Daniel Armor
  241.             gives me a small hint about the SHORT command
  242.             (I did not know about this!)
  243.     17.02.1994 -    Small bug in Autodocs removed
  244.             making this text as Date/--history-- autodoc
  245.     17.02.1994 -    Continuation of C translation
  246.     18.02.1994 -    Finished with C translation
  247.     19.02.1994 -    C bugs removed (thanks to SAS for helping a C Lamer
  248.             like me!), some optimizations done too.
  249.     19.02.1994 -    Oberon-2 version compiled with V40.17 includes
  250.     21.02.1994 -    Starting to write Modula-II testmodule
  251.             Vars for the begining of Heis calculation initiated.
  252.             Fixed small bugs in GregorianWeekday(),
  253.             HeisWeekday(), TimeToSec(), SecToTime()
  254.             Return-value of LMT() changed to LONGINT!
  255.             Converting testmodule to Oberon-2
  256.     22.02.1994 -    Converting testmodule to C
  257.     23.02.1994 -    I noticed, that I forgot the 3 functions
  258.             JulianWeek(), GregorianWeek(), HeisWeek()
  259.     24.02.1994 -    Initiated the 3 forgotten functions
  260.     26.02.1994 -    Initiating new GregorianEaster() with
  261.             Gauß-algorithms    but ONLY for 1900-2099!
  262.     27.02.1994 -    Bug fixed in JulianWeekday()
  263.             Bugs fixed in JulianDayDiff(), GregorianDayDiff(),
  264.             HeisDayDiff()
  265.             JulianDayGreater(), GregorianDayGreater(),
  266.             HeisDayGreater() Initiated.
  267.     02.03.1994 -    Small bug fixed in HeisDayDiff()
  268.             Bugs from 27.02. fixed in Modula-II and Oberon-2
  269.             versions
  270.             I found the way to extend GregorianEaster() !
  271.             Little bug fixed in JulianWeek(), GregorianWeek(),
  272.             HeisWeek() (~(M2) is not !(C))
  273.     05.03.1994 -    Some internal bugs removed
  274.             New internal procedures GregorianSB(),
  275.             GregorianJHSB(), GregorianJHStartSB() !
  276.             Extending GregorianEaster() :)
  277.     11.03.1994 -    Things from 05.03. done in Modula-II and Oberon
  278.     12.03.1994 -    If __SASC is defined autoinitialization instead of
  279.             _DateInit() will be used!
  280.     13.03.1994 -    After studying the SAS C Manual again I decided to
  281.             check for __SASC_650 instead of __SASC because of
  282.             the available priorities!
  283.             Setting the priority of _DateInit() for
  284.             autoinitialization to 600!
  285.     15.03.1994 -    Making Date as library
  286.     16.03.1994 -    Some work on the Autodocs was done,
  287.             eliminating OldGregorianEaster() by comments
  288.             (ANSI: STOP bad standards like that there are NO
  289.              nested comments possible in C!!!).
  290.     19.03.1994 -    Some work on the Autodocs was done in the M2 Code.
  291.     20.03.1994 -    Some work on the Autodocs was done in the Oberon Code
  292.     22.03.1994 -    In JDtoMJD(), MJDtoJD() an L was added to the
  293.             constant.
  294.             In GregorianWeekday(), HeisWeekday(),
  295.             JulianDiffDate(), GregorianDiffDate(),
  296.             HeisDiffDate(), JDToTime() I have inserted
  297.             conversions (found with Borland C++ 4.0).
  298.     24.03.1994 -    Making SunOS4.1.3, SunOS5.3(Solaris2.3) &
  299.             RS6000 AIX3.2.? binaries with gcc.
  300.             Eliminating nested commends by inserting a space
  301.             between / and * (I hate this ANSI C standard
  302.             feature for commends :(
  303.     27.03.1994 -    Adding library register assignments to the autodocs.
  304.     03.04.1994 -    Small fixes for the SAS C++ Compiler
  305.             Small bug fixed in the M2 version of
  306.             GregorianEaster()
  307.     04.04.1994 -    Adding some 'static' keywords.
  308.     10.04.1994 -    Changing from Shareware to Gift Ware ;-)
  309.     02.08.1994 -    Small fixes in the Autodocs (thanks to Rita Reichl
  310.             for correcting my bad english ;-)
  311.     11.08.1994 -    Again small fixes in the Autodocs!
  312.     13.11.1994 -    Small fix in JulianWeek(),GregorianWeek(),HeisWeek().
  313.             Thanks to Jim Rickman for reporting the bug!
  314.             Small changes in the Autodocs!
  315.     30.11.1994 -    Fix the bug from 13.11. in M2 and Oberon code.
  316.  
  317. Date/_DateInit                                                 Date/_DateInit
  318.  
  319.    NAME
  320.     _DateInit -- Procedure to initialize this module! (V33)
  321.  
  322.    SYNOPSIS
  323.     _DateInit();
  324.  
  325.     void _DateInit(void);
  326.  
  327.    FUNCTION
  328.     Initialize this module, like the modulebody in Modula-II or Oberon-2
  329.  
  330.    INPUTS
  331.     None.
  332.  
  333.    RESULT
  334.     None.
  335.  
  336.    EXAMPLE
  337.     ...
  338.     _DateInit();
  339.     ...
  340.  
  341.    NOTES
  342.     This function is only needed/available if you do not compile this
  343.     with a SAS C Compiler (using Autoinitialization!)
  344.     If you are not using SASC - don't forget to init this module with
  345.     this function - or you will get into trouble!!!
  346.  
  347.    BUGS
  348.     unknown.
  349.  
  350.    SEE ALSO
  351.  
  352.  
  353. Date/GregorianDayDiff                                   Date/GregorianDayDiff
  354.  
  355.    NAME
  356.     GregorianDayDiff -- Calculates the days between 2 dates. (V33)
  357.  
  358.    SYNOPSIS
  359.     days = GregorianDayDiff(day1,month1,year1,day2,month2,year2);
  360.      d0                 d0    d1    d2    d3    d4    d5
  361.  
  362.     long GregorianDayDiff(const unsigned short day1,
  363.         unsigned short month1, int year1, const unsigned short day2,
  364.         unsigned short month2, int year2);
  365.  
  366.    FUNCTION
  367.     GregorianDayDiff gives you back the number of days between
  368.     two specified dates.
  369.  
  370.    INPUTS
  371.     day1   - day of the first date
  372.     month1 - month of the first date
  373.     year1  - year of the first date
  374.     day2   - day of the second date
  375.     month2 - month of the second month
  376.     year2  - year of the second date
  377.  
  378.    RESULT
  379.     days - The number of days between the two dates
  380.         (positive if date1 <= date2).
  381.  
  382.    EXAMPLE
  383.     ...
  384.     days = GregorianDayDiff(18,9,1970,22,1,1994);
  385.     printf("Age of Kai Hofmann in days : %d\n",days);
  386.     ...
  387.  
  388.    NOTES
  389.     It is better only to use this function for years from -7 to 02.3200!
  390.  
  391.    BUGS
  392.     If you use one of the dates 5.10.1582 to 14.10.1582 you will get a
  393.     wrong output because these days don't exist!
  394.  
  395.    SEE ALSO
  396.     GregorianLeapYear(),GregorianMonthDays(),GregorianYearDays(),
  397.     JulianDayDiff(),HeisDayDiff()
  398.  
  399. Date/GregorianDayGreater                             Date/GregorianDayGreater
  400.  
  401.    NAME
  402.     GregorianDayGreater -- Checks if date1 is greater than date2. (V33)
  403.  
  404.    SYNOPSIS
  405.     greater = GregorianDayGreater(day1,month1,year1,day2,month2,year2);
  406.       d0                   d0    d1    d2    d3    d4    d5
  407.  
  408.     bool GregorianDayGreater(const unsigned short day1,
  409.         const unsigned short month1, const int year1,
  410.         const unsigned short day2, const unsigned short month2,
  411.         const int year2);
  412.  
  413.    FUNCTION
  414.     GregorianDayGreater test if date1 is greater than date2.
  415.  
  416.    INPUTS
  417.     day1   - day of the first date
  418.     month1 - month of the first date
  419.     year1  - year of the first date
  420.     day2   - day of the second date
  421.     month2 - month of the second month
  422.     year2  - year of the second date
  423.  
  424.    RESULT
  425.     greater - This is TRUE is date1 > date2 otherwise it's FALSE.
  426.  
  427.    EXAMPLE
  428.     ...
  429.     if (GregorianDayGreater(18,9,1970,22,1,1994))
  430.       printf("<\n");
  431.     else
  432.       printf(">=\n");
  433.     ...
  434.  
  435.    NOTES
  436.     It is better only to use this function for years from -7 to 3200!
  437.  
  438.    BUGS
  439.     No known bugs.
  440.  
  441.    SEE ALSO
  442.     JulianDayGreater(),HeisDayGreater()
  443.  
  444. Date/GregorianDaysAfterWeekday                 Date/GregorianDaysAfterWeekday
  445.  
  446.    NAME
  447.     GregorianDaysAfterWeekday -- Returns the diff to wday after. (V33)
  448.  
  449.    SYNOPSIS
  450.     days = GregorianDaysAfterWeekday(day,month,year,weekday);
  451.      d0                      d0   d1   d2     d3
  452.  
  453.     unsigned short GregorianDaysAfterWeekday(const unsigned short day,
  454.         const unsigned short month, const int year,
  455.         const Weekdays weekday);
  456.  
  457.    FUNCTION
  458.     Returns the days to the weekday after the specified date.
  459.     So if you specify the 22.1.1994 (Saturday) and Thursday
  460.     you get back 5!
  461.     If you specify the 22.1.1994 and Saturday you get back 0
  462.     (the same day)!
  463.  
  464.    INPUTS
  465.     day     - day of the date
  466.     month   - month of the date
  467.     year    - year of the date
  468.     weekday - weekday to search for building difference
  469.  
  470.    RESULT
  471.     days - The days after to the searched weekday.
  472.  
  473.    EXAMPLE
  474.     ...
  475.     days = GregorianDaysAfterWeekday(22,1,1994,Thursday);
  476.     ...
  477.  
  478.    NOTES
  479.     It is better to use this function only from -7 to 3200!
  480.  
  481.    BUGS
  482.     See GregorianWeekday()!
  483.  
  484.    SEE ALSO
  485.     GregorianWeekday(),JulianDaysAfterWeekday(),HeisDaysAfterWeekday()
  486.  
  487. Date/GregorianDaysBeforeWeekday               Date/GregorianDaysBeforeWeekday
  488.  
  489.    NAME
  490.     GregorianDaysBeforeWeekday -- Returns the diff to wday before. (V33)
  491.  
  492.    SYNOPSIS
  493.     days = GregorianDaysBeforeWeekday(day,month,year,weekday);
  494.      d0                   d0  d1    d2    d3
  495.  
  496.     unsigned short GregorianDaysBeforeWeekday(const unsigned short day,
  497.         const unsigned short month, const int year,
  498.         const Weekdays weekday);
  499.  
  500.    FUNCTION
  501.     Returns the days to the weekday before the specified date.
  502.     So if you specify the 22.1.1994 (Saturday) and Thursday
  503.     you get back 2!
  504.     If you specify the 22.1.1994 and Saturday you get back 0
  505.     (the same day)!
  506.  
  507.    INPUTS
  508.     day     - day of the date
  509.     month   - month of the date
  510.     year    - year of the date
  511.     weekday - weekday to search for building difference
  512.  
  513.    RESULT
  514.     days - The days back to the searched weekday (1-7)
  515.         If you get back 8 an error occurs!
  516.  
  517.    EXAMPLE
  518.     ...
  519.     days = GregorianDaysBeforeWeekday(22,1,1994,Thursday);
  520.     ...
  521.  
  522.    NOTES
  523.     It is better to use this function only from -7 to 3200!
  524.  
  525.    BUGS
  526.     See GregorianWeekday()!
  527.  
  528.    SEE ALSO
  529.     GregorianWeekday(),JulianDaysBeforeWeekday(),HeisDaysBeforeWeekday()
  530.  
  531. Date/GregorianDaySmaller                             Date/GregorianDaySmaller
  532.  
  533.    NAME
  534.     GregorianDaySmaller -- Checks if date1 is smaller than date2. (V33)
  535.  
  536.    SYNOPSIS
  537.     smaller = GregorianDaySmaller(day1,month1,year1,day2,month2,year2);
  538.       d0                   d0    d1    d2    d3    d4    d5
  539.  
  540.     bool GregorianDaySmaller(const unsigned short day1,
  541.         const unsigned short month1, const int year1,
  542.         const unsigned short day2, const unsigned short month2,
  543.         const int year2);
  544.  
  545.    FUNCTION
  546.     GregorianDaySmaller test if date1 is smaller than date2.
  547.  
  548.    INPUTS
  549.     day1   - day of the first date
  550.     month1 - month of the first date
  551.     year1  - year of the first date
  552.     day2   - day of the second date
  553.     month2 - month of the second month
  554.     year2  - year of the second date
  555.  
  556.    RESULT
  557.     smaller - This is TRUE is date1 < date2 otherwise it's FALSE.
  558.  
  559.    EXAMPLE
  560.     ...
  561.     if (GregorianDaySmaller(18,9,1970,22,1,1994))
  562.       printf("<\n");
  563.     else
  564.       printf(">=\n");
  565.     ...
  566.  
  567.    NOTES
  568.     It is better only to use this function for years from -7 to 3200!
  569.  
  570.    BUGS
  571.     No known bugs.
  572.  
  573.    SEE ALSO
  574.     JulianDaySmaller(),HeisDaySmaller()
  575.  
  576. Date/GregorianDiffDate                                 Date/GregorianDiffDate
  577.  
  578.    NAME
  579.     GregorianDiffDate -- Returns the diff date to another date. (V33)
  580.  
  581.    SYNOPSIS
  582.     GregorianDiffDate(day,month,year,diffdays,dday,dmonth,dyear);
  583.                d0   d1   d2     d3     a0    a1    a2
  584.  
  585.     void GregorianDiffDate(const unsigned short day,
  586.         const unsigned short month, const int year, int days,
  587.         unsigned short *dday, unsigned short *dmonth, int *dyear);
  588.  
  589.    FUNCTION
  590.     Returns the date which lies diffdays before/after the specified date.
  591.  
  592.    INPUTS
  593.     day      - day of the date
  594.     month    - month of the date
  595.     year     - year of the date
  596.     diffdays - difference to the date in days
  597.  
  598.    RESULT
  599.     dday   - Destination day
  600.     dmonth - Destination month
  601.     dyear  - Destination year
  602.  
  603.    EXAMPLE
  604.     ...
  605.     GregorianDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
  606.     ...
  607.  
  608.    NOTES
  609.     It is better to use this function only from -7 to 3200!
  610.  
  611.    BUGS
  612.     unknown.
  613.  
  614.    SEE ALSO
  615.     GregorianDayDiff(),GregorianMonthDays(),JulianDiffDate(),
  616.     HeisDiffDate()
  617.  
  618. Date/GregorianEaster                                     Date/GregorianEaster
  619.  
  620.    NAME
  621.     GregorianEaster -- Returns the date of eastern in a year (V33)
  622.  
  623.    SYNOPSIS
  624.     GregorianEaster(year,dday,dmonth);
  625.              d0   a0    a1
  626.  
  627.     void GregorianEaster(const int year, unsigned short *dday,
  628.         unsigned short *dmonth);
  629.  
  630.    FUNCTION
  631.     Returns the date of eastern for a specified year.
  632.  
  633.    INPUTS
  634.     year  - eastern is calculated for this year
  635.  
  636.    RESULT
  637.     dday   - day of easter-Sunday
  638.     dmonth - month of easter-Sunday
  639.  
  640.    EXAMPLE
  641.     ...
  642.     GregorianEaster(1994,&dday,&dmonth);
  643.     ...
  644.  
  645.    NOTES
  646.     Use this only for 1900 to 2099!
  647.     Tested for 1977-1994! But this formula is from Gauß - so it must be
  648.     correct :) but extended by me (hope this will be a good thing too!)
  649.  
  650.    BUGS
  651.     None.
  652.  
  653.    SEE ALSO
  654.     GEP(),GregorianJHSB()
  655.  
  656. Date/GregorianLeapYear                                 Date/GregorianLeapYear
  657.  
  658.    NAME
  659.     GregorianLeapYear -- Checks if a year is a leap year. (V33)
  660.  
  661.    SYNOPSIS
  662.     leapyear = GregorianLeapYear(year);
  663.        d0                  d0
  664.  
  665.     bool GregorianLeapYear(const int year);
  666.  
  667.    FUNCTION
  668.     GregorianLeapYear checks if a year is a leap year.
  669.     For years after 1582 all years devideable by 4 are leap years,
  670.     without years devideable by 100, but years devideable by 400
  671.     are leap years again!
  672.     For years before 1582 see JulianLeapYear().
  673.  
  674.    INPUTS
  675.     year - The year which should be checked (from -32768 to 32767)
  676.         I think only values from -7 to 3200 are valid, because of
  677.         the variant that was done on -8 by Augustus and other things!
  678.  
  679.    RESULT
  680.     leapyear - TRUE if the year is a leap year, otherwise false.
  681.  
  682.    EXAMPLE
  683.     ...
  684.     if (GregorianLeapYear(1994))
  685.       printf("leap year!\n");
  686.     else
  687.       printf("no leap year!\n");
  688.     ...
  689.  
  690.    NOTES
  691.     A year is 365.2425 days long!
  692.     Use this function only for values from -7 to 3199!
  693.  
  694.    BUGS
  695.     No known bugs.
  696.  
  697.    SEE ALSO
  698.     JulianLeapYear(),HeisLeapYear()
  699.  
  700. Date/GregorianMonthDays                               Date/GregorianMonthDays
  701.  
  702.    NAME
  703.     GregorianMonthDays -- Gives back the number of days of a month. (V33)
  704.  
  705.    SYNOPSIS
  706.     days = GregorianMonthDays(month,year);
  707.      d0               d0    d1
  708.  
  709.     unsigned short GregorianMonthDays(const unsigned short month,
  710.         const int year);
  711.  
  712.    FUNCTION
  713.     GregorianMonthDays gives you back the number of days a month in
  714.     a specified year has.
  715.     For the year 1582 and the month 10 there are only 21 days,
  716.     because of the Gregorian-reform 10 days are deleted from
  717.     the month (for more - look out for books about this!)
  718.  
  719.    INPUTS
  720.     month - The month from which you want to get the number of days.
  721.     year  - The year in which the month is.
  722.  
  723.    RESULT
  724.     days - The number of days the month uses, or 0 if you use
  725.         a wrong month.
  726.  
  727.    EXAMPLE
  728.     ...
  729.     days = GregorianMonthDays(1,1994);
  730.     printf("Days of January 1994 : %d\n",days);
  731.     ...
  732.  
  733.    NOTES
  734.     Use this function only for years from -7 to 3199!
  735.  
  736.    BUGS
  737.     none.
  738.  
  739.    SEE ALSO
  740.     GregorianLeapYear(),JulianMonthDays(),HeisMonthDays()
  741.  
  742. Date/GregorianMoonAge                                   Date/GregorianMoonAge
  743.  
  744.    NAME
  745.     GregorianMoonAge -- Returns the age of the moon (V33)
  746.  
  747.    SYNOPSIS
  748.     ep = GregorianMoonAge(day,month,year);
  749.     d0               d0   d1   d2
  750.  
  751.     unsigned short GregorianMoonAge(const unsigned short day,
  752.         const unsigned short month, const int year);
  753.  
  754.    FUNCTION
  755.     Returns the age of the moon on a specified date.
  756.  
  757.    INPUTS
  758.     day   - For this day the age is calculated.
  759.     month - For this month the age is calculated.
  760.     year  - For this year the age is calculated.
  761.  
  762.    RESULT
  763.     ep - The age of the moon on the specified date.
  764.  
  765.    EXAMPLE
  766.     ...
  767.     ep = GregorianMoonAge(18,9,1994);
  768.     ...
  769.  
  770.    NOTES
  771.     Use this only for 1582 to 4100!
  772.     This is only a experimental version!
  773.  
  774.    BUGS
  775.     unknown.
  776.  
  777.    SEE ALSO
  778.     MoonMonthAge(),GregorianEP()
  779.  
  780. Date/GregorianToJD                                         Date/GregorianToJD
  781.  
  782.    NAME
  783.     GregorianToJD -- Returns the JD for a date. (V33)
  784.  
  785.    SYNOPSIS
  786.     jd = GregorianToJD(day,month,year);
  787.     d0           d0   d1    d2
  788.  
  789.     unsigned long GregorianToJD(const unsigned short day,
  790.         const unsigned short month, const int year);
  791.  
  792.    FUNCTION
  793.     Returns the JD for a Gregorian date.
  794.  
  795.    INPUTS
  796.     day      - day of the date to convert
  797.     month    - month of the date to convert
  798.     year     - year of the date to convert
  799.  
  800.    RESULT
  801.     jd - This is the JD
  802.  
  803.    EXAMPLE
  804.     ...
  805.     jd = GregorianToJD(23,1,1994);
  806.     ...
  807.  
  808.    NOTES
  809.     It is better to use this function only from -7 to 3200!
  810.  
  811.    BUGS
  812.     unknown.
  813.  
  814.    SEE ALSO
  815.     GSYearToJD(),GYearToScaliger(),GregorianDayDiff(),JulianToJD(),
  816.     HeisToJD()
  817.  
  818. Date/GregorianWeek                                         Date/GregorianWeek
  819.  
  820.    NAME
  821.     GregorianWeek -- Gets the weeknumber of a specified date. (V33)
  822.  
  823.    SYNOPSIS
  824.     weeknr = GregorianWeek(day,month,year);
  825.       d0            d0   d1   d2
  826.  
  827.     unsigned short GregorianWeek(const unsigned short day,
  828.         const unsigned short month, const int year);
  829.  
  830.    FUNCTION
  831.     GregorianWeek gets the weeknumber for a specified date.
  832.  
  833.    INPUTS
  834.     day   - day of the date
  835.     month - month of the date
  836.     year  - year of the date
  837.  
  838.    RESULT
  839.     week - This is the number of the week the specified date lies in.
  840.         If the first day in a new year is a Friday, Saturday or
  841.         Sunday, this would be the last week of the last year!
  842.         If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
  843.         the 31.12. is a Monday, Tuesday or a Wednesday this is the
  844.         first week of the next year!
  845.  
  846.    EXAMPLE
  847.     ...
  848.     weeknr = GregorianWeek(4,10,1582);
  849.     ...
  850.  
  851.    NOTES
  852.     It is better only to use this function for years from 0 to 3000!
  853.  
  854.    BUGS
  855.     For years < 0 errors could occur.
  856.  
  857.    SEE ALSO
  858.     JulianWeek(),HeisWeek(),GregorianWeekday(),GregorianDayDiff()
  859.  
  860. Date/GregorianWeekday                                   Date/GregorianWeekday
  861.  
  862.    NAME
  863.     GregorianWeekday -- Gets the weekday of a specified date. (V33)
  864.  
  865.    SYNOPSIS
  866.     weekday = GregorianWeekday(day,month,year);
  867.       d0                d0   d1   d2
  868.  
  869.     Weekdays GregorianWeekday(const unsigned short day,
  870.         unsigned short month, int year);
  871.  
  872.    FUNCTION
  873.     GregorianWeekday gets the weekday for a specified date.
  874.  
  875.    INPUTS
  876.     day   - day of the date
  877.     month - month of the date
  878.     year  - year of the date
  879.  
  880.    RESULT
  881.     weekday - This result is of type:
  882.         Weekdays = (dayerr,Monday,Tuesday,Wednesday,Thursday,Friday,
  883.         Saturday,Sunday);
  884.         dayerr will show you, that an error occurs!
  885.  
  886.    EXAMPLE
  887.     ...
  888.     weekday = GregorianWeekday(22,1,1994);
  889.     if (weekday == dayerr)
  890.       {
  891.        ...
  892.       }
  893.     ...
  894.  
  895.    NOTES
  896.     It is better only to use this function for years from -7 to 3200!
  897.     In this version dayerr will only occur for the lost days :)
  898.  
  899.    BUGS
  900.     It's not possible to use years < 0 (for more see JulianWeekday()).
  901.  
  902.    SEE ALSO
  903.     JulianWeekday(),HeisWeekday()
  904.  
  905. Date/GregorianYearDays                                 Date/GregorianYearDays
  906.  
  907.    NAME
  908.     GregorianYearDays -- Gives back the number of days in a year. (V33)
  909.  
  910.    SYNOPSIS
  911.     days = GregorianYearDays(year);
  912.      d0              d0
  913.  
  914.     unsigned int GregorianYearDays(const int year);
  915.  
  916.    FUNCTION
  917.     GregorianYearDays gives you back the number of days in
  918.     a specified year.
  919.  
  920.    INPUTS
  921.     year  - The year in which to count the days.
  922.  
  923.    RESULT
  924.     days - The number of days the year uses.
  925.  
  926.    EXAMPLE
  927.     ...
  928.     days = GregorianYearDays(1994);
  929.     printf("Days of 1994 : %d\n",days);
  930.     ...
  931.  
  932.    NOTES
  933.     It is better only to use this function for years from -7 to 3199!
  934.  
  935.    BUGS
  936.     No known bugs.
  937.  
  938.    SEE ALSO
  939.     GregorianMonthDays(),JulianYearDays(),HeisYearDays()
  940.  
  941. Date/GSYearToJD                                               Date/GSYearToJD
  942.  
  943.    NAME
  944.     GSYearToJD -- Calcs the JD from a Scaliger year. (V33)
  945.  
  946.    SYNOPSIS
  947.     jd = GSYearToJD(syear);
  948.     d0         d0
  949.  
  950.     unsigned long GSYearToJD(const unsigned int syear);
  951.  
  952.    FUNCTION
  953.     Returns the Julianday of a Scaliger year.
  954.  
  955.    INPUTS
  956.     syear     - Scaliger year
  957.  
  958.    RESULT
  959.     jd - The Julianday
  960.  
  961.    EXAMPLE
  962.     ...
  963.     jd = GSYearToJD(4800);
  964.     ...
  965.  
  966.    NOTES
  967.     It is better to use this function only from 4707 to 7981!
  968.  
  969.    BUGS
  970.     unknown.
  971.  
  972.    SEE ALSO
  973.     JSYearToJD(),HSYearToJD()
  974.  
  975. Date/GYearToScaliger                                     Date/GYearToScaliger
  976.  
  977.    NAME
  978.     GYearToScaliger -- Returns the year as Scaliger year. (V33)
  979.  
  980.    SYNOPSIS
  981.     syear = GYearToScaliger(year);
  982.      d0             d0
  983.  
  984.     unsigned int GYearToScaliger(const int year);
  985.  
  986.    FUNCTION
  987.     Returns the Scaliger year.
  988.  
  989.    INPUTS
  990.     year     - Gregorian year
  991.  
  992.    RESULT
  993.     syear - The Scaliger year
  994.  
  995.    EXAMPLE
  996.     ...
  997.     syear = GYearToScaliger(1994);
  998.     ...
  999.  
  1000.    NOTES
  1001.     It is better to use this function only from -7 to 3200!
  1002.  
  1003.    BUGS
  1004.     unknown.
  1005.  
  1006.    SEE ALSO
  1007.     JYearToScaliger(),HYearToScaliger()
  1008.  
  1009. Date/HeisDayDiff                                             Date/HeisDayDiff
  1010.  
  1011.    NAME
  1012.     HeisDayDiff -- Calculates the days between 2 dates. (V33)
  1013.  
  1014.    SYNOPSIS
  1015.     days = HeisDayDiff(day1,month1,year1,day2,month2,year2);
  1016.      d0            d0    d1    d2    d3    d4    d5
  1017.  
  1018.     long HeisDayDiff(const unsigned short day1, unsigned short month1,
  1019.         int year1, const unsigned short day2, unsigned short month2,
  1020.         int year2);
  1021.  
  1022.    FUNCTION
  1023.     HeisDayDiff gives you back the number of days between
  1024.     two specified dates.
  1025.  
  1026.    INPUTS
  1027.     day1   - day of the first date
  1028.     month1 - month of the first date
  1029.     year1  - year of the first date
  1030.     day2   - day of the second date
  1031.     month2 - month of the second month
  1032.     year2  - year of the second date
  1033.  
  1034.    RESULT
  1035.     days - The number of days between the two dates
  1036.         (positive if date1 <= date2).
  1037.  
  1038.    EXAMPLE
  1039.     ...
  1040.     days = HeisDayDiff(18,9,1970,22,1,1994);
  1041.     printf("Age of Kai Hofmann in days : %d\n",days);
  1042.     ...
  1043.  
  1044.    NOTES
  1045.     It is better only to use this function for years from -7 to 8000!
  1046.  
  1047.    BUGS
  1048.     If you use on of the dates 5.10.1582 to 14.10.1582 you will get
  1049.     wrong output because these days don't exist!
  1050.  
  1051.    SEE ALSO
  1052.     HeisLeapYear(),HeisMonthDays(),HeisYearDays(),
  1053.     JulianDayDiff(),GregorianDayDiff()
  1054.  
  1055. Date/HeisDayGreater                                       Date/HeisDayGreater
  1056.  
  1057.    NAME
  1058.     HeisDayGreater -- Checks if date1 is greater than date2. (V33)
  1059.  
  1060.    SYNOPSIS
  1061.     greater = HeisDayGreater(day1,month1,year1,day2,month2,year2);
  1062.       d0              d0    d1    d2    d3    d4    d5
  1063.  
  1064.     bool HeisDayGreater(const unsigned short day1,
  1065.         const unsigned short month1, const int year1,
  1066.         const unsigned short day2, const unsigned short month2,
  1067.         const int year2);
  1068.  
  1069.    FUNCTION
  1070.     HeisDayGreater test if date1 is greater than date2.
  1071.  
  1072.    INPUTS
  1073.     day1   - day of the first date
  1074.     month1 - month of the first date
  1075.     year1  - year of the first date
  1076.     day2   - day of the second date
  1077.     month2 - month of the second month
  1078.     year2  - year of the second date
  1079.  
  1080.    RESULT
  1081.     greater - This is TRUE is date1 > date2 otherwise it's FALSE.
  1082.  
  1083.    EXAMPLE
  1084.     ...
  1085.     if (HeisDayGreater(18,9,1970,22,1,1994))
  1086.       printf(">\n");
  1087.     else
  1088.       printf("<=\n");
  1089.     ...
  1090.  
  1091.    NOTES
  1092.     It is better only to use this function for years from -7 to 8000!
  1093.  
  1094.    BUGS
  1095.     No known bugs.
  1096.  
  1097.    SEE ALSO
  1098.     JulianDayGreater(),GregorianDayGreater()
  1099.  
  1100. Date/HeisDaysAfterWeekday                           Date/HeisDaysAfterWeekday
  1101.  
  1102.    NAME
  1103.     HeisDaysAfterWeekday -- Returns the diff to the wday after. (V33)
  1104.  
  1105.    SYNOPSIS
  1106.     days = HeisDaysAfterWeekday(day,month,year,weekday);
  1107.      d0                 d0   d1   d2     d3
  1108.  
  1109.     unsigned short HeisDaysAfterWeekday(const unsigned short day,
  1110.         const unsigned short month, const int year,
  1111.         const Weekdays weekday);
  1112.  
  1113.    FUNCTION
  1114.     Returns the days to the weekday after the specified date.
  1115.     So if you specify the 22.1.1994 (Saturday) and Thursday
  1116.     you get back 5!
  1117.     If you specify the 22.1.1994 and Saturday you get back 0
  1118.     (the same day)!
  1119.  
  1120.    INPUTS
  1121.     day     - day of the date
  1122.     month   - month of the date
  1123.     year    - year of the date
  1124.     weekday - weekday to search for building difference
  1125.  
  1126.    RESULT
  1127.     days - The days after to the searched weekday.
  1128.  
  1129.    EXAMPLE
  1130.     ...
  1131.     days = HeisDaysAfterWeekday(22,1,1994,Thursday);
  1132.     ...
  1133.  
  1134.    NOTES
  1135.     It is better to use this function only from -7 to 8000!
  1136.  
  1137.    BUGS
  1138.     See HeisWeekday()!
  1139.  
  1140.    SEE ALSO
  1141.     HeisWeekday(),JulianDaysAfterWeekday(),GregorianDaysAfterWeekday()
  1142.  
  1143. Date/HeisDaysBeforeWeekday                         Date/HeisDaysBeforeWeekday
  1144.  
  1145.    NAME
  1146.     HeisDaysBeforeWeekday -- Returns the diff to wday before. (V33)
  1147.  
  1148.    SYNOPSIS
  1149.     days = HeisDaysBeforeWeekday(day,month,year,weekday);
  1150.      d0                  d0  d1    d2    d3
  1151.  
  1152.     unsigned short HeisDaysBeforeWeekday(const unsigned short day,
  1153.         const unsigned short month, const int year,
  1154.         const Weekdays weekday);
  1155.  
  1156.    FUNCTION
  1157.     Returns the days to the weekday before the specified date.
  1158.     So if you specify the 22.1.1994 (Saturday) and Thursday
  1159.     you get back 2!
  1160.     If you specify the 22.1.1994 and Saturday you get back 0
  1161.     (the same day)!
  1162.  
  1163.    INPUTS
  1164.     day     - day of the date
  1165.     month   - month of the date
  1166.     year    - year of the date
  1167.     weekday - weekday to search for building difference
  1168.  
  1169.    RESULT
  1170.     days - The days back to the searched weekday (1-7)
  1171.         If you get back 8 an error occurs!
  1172.  
  1173.    EXAMPLE
  1174.     ...
  1175.     days = HeisDaysBeforeWeekday(22,1,1994,Thursday);
  1176.     ...
  1177.  
  1178.    NOTES
  1179.     It is better to use this function only from -7 to 8000!
  1180.  
  1181.    BUGS
  1182.     See HeisWeekday()!
  1183.  
  1184.    SEE ALSO
  1185.     HeisWeekday(),JulianDaysBeforeWeekday(),GregorianDaysBeforeWeekday()
  1186.  
  1187. Date/HeisDaySmaller                                       Date/HeisDaySmaller
  1188.  
  1189.    NAME
  1190.     HeisDaySmaller -- Checks if date1 is smaller than date2. (V33)
  1191.  
  1192.    SYNOPSIS
  1193.     smaller = HeisDaySmaller(day1,month1,year1,day2,month2,year2);
  1194.       d0              d0    d1    d2    d3    d4    d5
  1195.  
  1196.     bool HeisDaySmaller(const unsigned short day1,
  1197.         const unsigned short month1, const int year1,
  1198.         const unsigned short day2, const unsigned short month2,
  1199.         const int year2);
  1200.  
  1201.    FUNCTION
  1202.     HeisDaySmaller test if date1 is smaller than date2.
  1203.  
  1204.    INPUTS
  1205.     day1   - day of the first date
  1206.     month1 - month of the first date
  1207.     year1  - year of the first date
  1208.     day2   - day of the second date
  1209.     month2 - month of the second month
  1210.     year2  - year of the second date
  1211.  
  1212.    RESULT
  1213.     smaller - This is TRUE is date1 < date2 otherwise it's FALSE.
  1214.  
  1215.    EXAMPLE
  1216.     ...
  1217.     if (HeisDaySmaller(18,9,1970,22,1,1994))
  1218.       printf("<\n");
  1219.     else
  1220.       printf(">=\n");
  1221.     ...
  1222.  
  1223.    NOTES
  1224.     It is better only to use this function for years from -7 to 8000!
  1225.  
  1226.    BUGS
  1227.     No known bugs.
  1228.  
  1229.    SEE ALSO
  1230.     JulianDaySmaller,GregorianDaySmaller()
  1231.  
  1232. Date/HeisDiffDate                                           Date/HeisDiffDate
  1233.  
  1234.    NAME
  1235.     HeisDiffDate -- Returns the date for a diff to another date. (V33)
  1236.  
  1237.    SYNOPSIS
  1238.     HeisDiffDate(day,month,year,diffdays,dday,dmonth,dyear);
  1239.               d0   d1   d2     d3     a0    a1    a2
  1240.  
  1241.     void HeisDiffDate(const unsigned short day,
  1242.         const unsigned short month, const int year, int days,
  1243.         unsigned short *dday, unsigned short *dmonth, int *dyear);
  1244.  
  1245.    FUNCTION
  1246.     Returns the date which lies diffdays before/after the specified date.
  1247.  
  1248.    INPUTS
  1249.     day      - day of the date
  1250.     month    - month of the date
  1251.     year     - year of the date
  1252.     diffdays - difference to the date in days
  1253.  
  1254.    RESULT
  1255.     dday   - Destination day
  1256.     dmonth - Destination month
  1257.     dyear  - Destination year
  1258.  
  1259.    EXAMPLE
  1260.     ...
  1261.     HeisDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
  1262.     ...
  1263.  
  1264.    NOTES
  1265.     It is better to use this function only from -7 to 8000!
  1266.  
  1267.    BUGS
  1268.     unknown.
  1269.  
  1270.    SEE ALSO
  1271.     HeisDayDiff(),HeisMonthDays(),JulianDiffDate(),GregorianDiffDate()
  1272.  
  1273. Date/HeisLeapYear                                           Date/HeisLeapYear
  1274.  
  1275.    NAME
  1276.     HeisLeapYear -- Checks if a year is a leap year. (V33)
  1277.  
  1278.    SYNOPSIS
  1279.     leapyear = HeisLeapYear(year);
  1280.        d0             d0
  1281.  
  1282.     bool HeisLeapYear(const int year);
  1283.  
  1284.    FUNCTION
  1285.     HeisLeapYear checks if a year is a leap year.
  1286.     For years after 1582 see GregorianLeapYear(),
  1287.     The correction from N. Heis says, that all years devideable by
  1288.     3200 are no longer leap years!
  1289.     For years before 1582 see JulianLeapYear
  1290.  
  1291.    INPUTS
  1292.     year - The year which should be checked (from -32768 to 32767)
  1293.         I think only values from -7 to 32767 are valid, because of
  1294.         the variant that was done on -8 by Augustus and other things!
  1295.  
  1296.    RESULT
  1297.     leapyear - TRUE if the year is a leap year, otherwise false.
  1298.  
  1299.    EXAMPLE
  1300.     ...
  1301.     if (HeisLeapYear(1994))
  1302.       printf("leap year!\n");
  1303.     else
  1304.       printf("no leap year!\n");
  1305.     ...
  1306.  
  1307.    NOTES
  1308.     A year is now 365.2421875 days!
  1309.     Use this function only for values from -7 to 8000!
  1310.  
  1311.    BUGS
  1312.     No known bugs.
  1313.  
  1314.    SEE ALSO
  1315.     JulianLeapYear(),GregorianLeapYear()
  1316.  
  1317. Date/HeisMonthDays                                         Date/HeisMonthDays
  1318.  
  1319.    NAME
  1320.     HeisMonthDays -- Gives back the number of days of a month. (V33)
  1321.  
  1322.    SYNOPSIS
  1323.     days = HeisMonthDays(month,year);
  1324.      d0              d0    d1
  1325.  
  1326.     unsigned short HeisMonthDays(const unsigned short month,
  1327.         const int year);
  1328.  
  1329.    FUNCTION
  1330.     HeisMonthDays gives you back the number of days a month in
  1331.     a specified year has.
  1332.     For the year 1582 and the month 10 there are only 21 days,
  1333.     because of the Gregorian-reform 10 days are deleted from
  1334.     the month (for more - look out for books about this!)
  1335.  
  1336.    INPUTS
  1337.     month - The month from which you want to get the number of days.
  1338.     year  - The year in which the month is.
  1339.  
  1340.    RESULT
  1341.     days - The number of days the month uses, or 0 if you use
  1342.         a wrong month.
  1343.  
  1344.    EXAMPLE
  1345.     ...
  1346.     days = HeisMonthDays(1,1994);
  1347.     printf("Days of January 1994 : %d\n",days);
  1348.     ...
  1349.  
  1350.    NOTES
  1351.     Use this function only for years from -7 to 8000!
  1352.  
  1353.    BUGS
  1354.     See GregorianMonthDays!
  1355.  
  1356.    SEE ALSO
  1357.     HeisLeapYear(),JulianMonthDays(),GregorianMonthDays()
  1358.  
  1359. Date/HeisToJD                                                   Date/HeisToJD
  1360.  
  1361.    NAME
  1362.     HeisToJD -- Returns the JD for a date. (V33)
  1363.  
  1364.    SYNOPSIS
  1365.     jd = HeisToJD(day,month,year);
  1366.     d0          d0   d1    d2
  1367.  
  1368.     unsigned long HeisToJD(const unsigned short day,
  1369.         const unsigned short month, const int year);
  1370.  
  1371.    FUNCTION
  1372.     Returns the JD for a Heis date.
  1373.  
  1374.    INPUTS
  1375.     day      - day of the date to convert
  1376.     month    - month of the date to convert
  1377.     year     - year of the date to convert
  1378.  
  1379.    RESULT
  1380.     jd - This is the JD
  1381.  
  1382.    EXAMPLE
  1383.     ...
  1384.     jd = HeisToJD(23,1,1994);
  1385.     ...
  1386.  
  1387.    NOTES
  1388.     It is better to use this function only from -7 to 3268!
  1389.  
  1390.    BUGS
  1391.     unknown.
  1392.  
  1393.    SEE ALSO
  1394.     HSYearToJD(),HYearToScaliger(),HeisDayDiff(),JulianToJD(),HeisToJD()
  1395.  
  1396. Date/HeisWeek                                                   Date/HeisWeek
  1397.  
  1398.    NAME
  1399.     HeisWeek -- Gets the weeknumber of a specified date. (V33)
  1400.  
  1401.    SYNOPSIS
  1402.     weeknr = HeisWeek(day,month,year);
  1403.       d0           d0  d1    d2
  1404.  
  1405.     unsigned short HeisWeek(const unsigned short day,
  1406.         const unsigned short month, const int year);
  1407.  
  1408.    FUNCTION
  1409.     HeisWeek gets the weeknumber for a specified date.
  1410.  
  1411.    INPUTS
  1412.     day   - day of the date
  1413.     month - month of the date
  1414.     year  - year of the date
  1415.  
  1416.    RESULT
  1417.     week - This is the number of the week the specified date lies in.
  1418.         If the first day in a new year is a Friday, Saturday or
  1419.         Sunday, this would be the last week of the last year!
  1420.         If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
  1421.         the 31.12. is a Monday, Tuesday or a Wednesday this is the
  1422.         first week of the next year!
  1423.  
  1424.    EXAMPLE
  1425.     ...
  1426.     weeknr = HeisWeek(4,10,1582);
  1427.     ...
  1428.  
  1429.    NOTES
  1430.     It is better only to use this function for years from 0 to 8000!
  1431.  
  1432.    BUGS
  1433.     For years < 0 errors could occur.
  1434.  
  1435.    SEE ALSO
  1436.     JulianWeek(),GregorianWeek(),HeisWeekday(),HeisDayDiff()
  1437.  
  1438. Date/HeisWeekday                                             Date/HeisWeekday
  1439.  
  1440.    NAME
  1441.     HeisWeekday -- Gets the weekday of a specified date. (V33)
  1442.  
  1443.    SYNOPSIS
  1444.     weekday = HeisWeekday(day,month,year);
  1445.       d0               d0   d1   d2
  1446.  
  1447.     Weekdays HeisWeekday(const unsigned short day, unsigned short month,
  1448.         int year);
  1449.  
  1450.    FUNCTION
  1451.     HeisWeekday gets the weekday for a specified date.
  1452.  
  1453.    INPUTS
  1454.     day   - day of the date
  1455.     month - month of the date
  1456.     year  - year of the date
  1457.  
  1458.    RESULT
  1459.     weekday - This result is of type:
  1460.         Weekdays = (dayerr,Monday,Tuesday,Wednesday,Thursday,Friday,
  1461.         Saturday,Sunday);
  1462.         dayerr will show you, that an error occurs!
  1463.  
  1464.    EXAMPLE
  1465.     ...
  1466.     weekday = HeisWeekday(22,1,1994);
  1467.     if (weekday == dayerr)
  1468.       {
  1469.        ...
  1470.       }
  1471.     ...
  1472.  
  1473.    NOTES
  1474.     It is better only to use this function for years from -7 to 8000!
  1475.     In this version dayerr will only occur for the lost days :)
  1476.  
  1477.    BUGS
  1478.     It is not possible to use year < 0 (see JulianWeekday() for more).
  1479.  
  1480.    SEE ALSO
  1481.     JulianWeekday(),GregorianWeekday()
  1482.  
  1483. Date/HeisYearDays                                           Date/HeisYearDays
  1484.  
  1485.    NAME
  1486.     HeisYearDays -- Gives back the number of days in a year. (V33)
  1487.  
  1488.    SYNOPSIS
  1489.     days = HeisYearDays(year);
  1490.      d0             d0
  1491.  
  1492.     unsigned int HeisYearDays(const int year);
  1493.  
  1494.    FUNCTION
  1495.     HeisYearDays gives you back the number of days in
  1496.     a specified year.
  1497.  
  1498.    INPUTS
  1499.     year  - The year in which to count the days.
  1500.  
  1501.    RESULT
  1502.     days - The number of days the year uses.
  1503.  
  1504.    EXAMPLE
  1505.     ...
  1506.     days = HeisYearDays(1994);
  1507.     printf("Days of 1994 : %d\n",days);
  1508.     ...
  1509.  
  1510.    NOTES
  1511.     It is better only to use this function for years from -7 to 8000!
  1512.  
  1513.    BUGS
  1514.     No known bugs.
  1515.  
  1516.    SEE ALSO
  1517.     HeisMonthDays(),JulianYearDays(),GregorianYearDays()
  1518.  
  1519. Date/HSYearToJD                                               Date/HSYearToJD
  1520.  
  1521.    NAME
  1522.     HSYearToJD -- Calcs the JD from a Scaliger year. (V33)
  1523.  
  1524.    SYNOPSIS
  1525.     jd = HSYearToJD(syear);
  1526.     d0         d0
  1527.  
  1528.     unsigned long HSYearToJD(const unsigned int syear);
  1529.  
  1530.    FUNCTION
  1531.     Returns the Julianday of a Scaliger year.
  1532.  
  1533.    INPUTS
  1534.     syear     - Scaliger year
  1535.  
  1536.    RESULT
  1537.     jd - The Julianday
  1538.  
  1539.    EXAMPLE
  1540.     ...
  1541.     jd = HSYearToJD(6700);
  1542.     ...
  1543.  
  1544.    NOTES
  1545.     It is better to use this function only from 4707 to 7981!
  1546.     In this version only GSYearToJD() is called, because the
  1547.     Scaliger period is only valid to 3268
  1548.  
  1549.    BUGS
  1550.     unknown.
  1551.  
  1552.    SEE ALSO
  1553.     JSYearToJD(),GSYearToJD()
  1554.  
  1555. Date/HYearToScaliger                                     Date/HYearToScaliger
  1556.  
  1557.    NAME
  1558.     HYearToScaliger -- Returns the year as Scaliger year. (V33)
  1559.  
  1560.    SYNOPSIS
  1561.     syear = HYearToScaliger(year);
  1562.      d0             d0
  1563.  
  1564.     unsigned int HYearToScaliger(const int year);
  1565.  
  1566.    FUNCTION
  1567.     Returns the Scaliger year.
  1568.  
  1569.    INPUTS
  1570.     year     - Heis year
  1571.  
  1572.    RESULT
  1573.     syear - The Scaliger year
  1574.  
  1575.    EXAMPLE
  1576.     ...
  1577.     syear = HYearToScaliger(1994);
  1578.     ...
  1579.  
  1580.    NOTES
  1581.     It is better to use this function only from -7 to 8000!
  1582.  
  1583.    BUGS
  1584.     The Scaliger period is defined to 3268!!!.
  1585.  
  1586.    SEE ALSO
  1587.     JYearToScaliger(),GYearToScaliger()
  1588.  
  1589. Date/JDtoMJD                                                     Date/JDtoMJD
  1590.  
  1591.    NAME
  1592.     JDtoMJD -- Switches from JD to MJD. (V33)
  1593.  
  1594.    SYNOPSIS
  1595.     mjd = JDtoMJD(jd);
  1596.     d0          d0
  1597.  
  1598.     unsigned long JDtoMJD(const unsigned long jd);
  1599.  
  1600.    FUNCTION
  1601.     Returns the Modified Julianday of a Julianday.
  1602.  
  1603.    INPUTS
  1604.     jd - Julianday
  1605.  
  1606.    RESULT
  1607.     mjd - The Modified Julianday
  1608.  
  1609.    EXAMPLE
  1610.     ...
  1611.     mjd = JDtoMJD(2449354);
  1612.     ...
  1613.  
  1614.    NOTES
  1615.     none
  1616.  
  1617.    BUGS
  1618.     Only use this function for jd > 2400001, because mjd is only
  1619.     defined for this, otherwise system will crash!
  1620.  
  1621.    SEE ALSO
  1622.     MJDtoJD()
  1623.  
  1624. Date/JDToTime                                                   Date/JDToTime
  1625.  
  1626.    NAME
  1627.     JDToTime -- Returns the real time for a JD time. (V33)
  1628.  
  1629.    SYNOPSIS
  1630.     JDToTime(jd,rhour,rmin,rsec);
  1631.          d0  a0    a1   a2
  1632.  
  1633.     void JDToTime(float jd, unsigned short *rhour, unsigned short *rmin,
  1634.         unsigned short *rsec);
  1635.  
  1636.    FUNCTION
  1637.     Returns the real time for a JD time.
  1638.  
  1639.    INPUTS
  1640.     jd - JD time
  1641.  
  1642.    RESULT
  1643.     rhour - 24 hour real time
  1644.     rmin  - real minutes
  1645.     rsec  - real seconds
  1646.  
  1647.    EXAMPLE
  1648.     ...
  1649.     JDToTime(0.76543,&rhour,&rmin,&rsec);
  1650.     ...
  1651.  
  1652.    NOTES
  1653.     none.
  1654.  
  1655.    BUGS
  1656.     If jd is > 0 (including days) there will be occur arithmetic bugs!
  1657.  
  1658.    SEE ALSO
  1659.     TimeToJD()
  1660.  
  1661. Date/JSYearToJD                                               Date/JSYearToJD
  1662.  
  1663.    NAME
  1664.     JSYearToJD -- Calcs the JD from a Scaliger year. (V33)
  1665.  
  1666.    SYNOPSIS
  1667.     jd = JSYearToJD(syear);
  1668.     d0         d0
  1669.  
  1670.     unsigned long JSYearToJD(const unsigned int syear);
  1671.  
  1672.    FUNCTION
  1673.     Returns the Julianday of a Scaliger year.
  1674.  
  1675.    INPUTS
  1676.     syear     - Scaliger year
  1677.  
  1678.    RESULT
  1679.     jd - The Julianday
  1680.  
  1681.    EXAMPLE
  1682.     ...
  1683.     jd = JSYearToJD(4800);
  1684.     ...
  1685.  
  1686.    NOTES
  1687.     It is better to use this function only from 4707 to 6295!
  1688.  
  1689.    BUGS
  1690.     unknown.
  1691.  
  1692.    SEE ALSO
  1693.     GSYearToJD(),HSYearToJD()
  1694.  
  1695. Date/JulianDayDiff                                         Date/JulianDayDiff
  1696.  
  1697.    NAME
  1698.     JulianDayDiff -- Calculates the days between 2 dates. (V33)
  1699.  
  1700.    SYNOPSIS
  1701.     days = JulianDayDiff(day1,month1,year1,day2,month2,year2);
  1702.      d0              d0    d1    d2    d3    d4    d5
  1703.  
  1704.     long JulianDayDiff(const unsigned short day1, unsigned short month1,
  1705.         int year1, const unsigned short day2, unsigned short month2,
  1706.         int year2);
  1707.  
  1708.    FUNCTION
  1709.     JulianDayDiff gives you back the number of days between
  1710.     two specified dates.
  1711.  
  1712.    INPUTS
  1713.     day1   - day of the first date
  1714.     month1 - month of the first date
  1715.     year1  - year of the first date
  1716.     day2   - day of the second date
  1717.     month2 - month of the second month
  1718.     year2  - year of the second date
  1719.  
  1720.    RESULT
  1721.     days - The number of days between the two dates
  1722.         (positive if date1 <= date2).
  1723.  
  1724.    EXAMPLE
  1725.     ...
  1726.     days = JulianDayDiff(18,9,1970,22,1,1994);
  1727.     printf("Age of Kai Hofmann in days : %d\n",days);
  1728.     ...
  1729.  
  1730.    NOTES
  1731.     It is better only to use this function for years from -7 to 1582!
  1732.  
  1733.    BUGS
  1734.     No known bugs.
  1735.  
  1736.    SEE ALSO
  1737.     JulianLeapYear(),JulianMonthDays(),JulianYearDays(),
  1738.     GregorianDayDiff(),HeisDayDiff()
  1739.  
  1740. Date/JulianDayGreater                                   Date/JulianDayGreater
  1741.  
  1742.    NAME
  1743.     JulianDayGreater -- Checks if date1 is greater than date2. (V33)
  1744.  
  1745.    SYNOPSIS
  1746.     greater = JulianDayGreater(day1,month1,year1,day2,month2,year2);
  1747.       d0                d0    d1    d2    d3    d4    d5
  1748.  
  1749.     bool JulianDayGreater(const unsigned short day1,
  1750.         const unsigned short month1, const int year1,
  1751.         const unsigned short day2, const unsigned short month2,
  1752.         const int year2);
  1753.  
  1754.    FUNCTION
  1755.     JulianDayGreater test if date1 is greater than date2.
  1756.  
  1757.    INPUTS
  1758.     day1   - day of the first date
  1759.     month1 - month of the first date
  1760.     year1  - year of the first date
  1761.     day2   - day of the second date
  1762.     month2 - month of the second month
  1763.     year2  - year of the second date
  1764.  
  1765.    RESULT
  1766.     greater - This is TRUE is date1 > date2 otherwise it's FALSE.
  1767.  
  1768.    EXAMPLE
  1769.     ...
  1770.     if (JulianDayGreater(18,9,1970,22,1,1994))
  1771.       printf(">\n");
  1772.     else
  1773.       printf("<=\n");
  1774.     ...
  1775.  
  1776.    NOTES
  1777.     It is better only to use this function for years from -7 to 1582!
  1778.  
  1779.    BUGS
  1780.     No known bugs.
  1781.  
  1782.    SEE ALSO
  1783.     GregorianDayGreater(),HeisDayGreater()
  1784.  
  1785. Date/JulianDaysAfterWeekday                       Date/JulianDaysAfterWeekday
  1786.  
  1787.    NAME
  1788.     JulianDaysAfterWeekday -- Returns the diff to the wday after. (V33)
  1789.  
  1790.    SYNOPSIS
  1791.     days = JulianDaysAfterWeekday(day,month,year,weekday);
  1792.      d0                   d0   d1   d2     d3
  1793.  
  1794.     unsigned short JulianDaysAfterWeekday(const unsigned short day,
  1795.         const unsigned short month, const int year,
  1796.         const Weekdays weekday);
  1797.  
  1798.    FUNCTION
  1799.     Returns the days to the weekday after the specified date.
  1800.     So if you specify the 22.1.1994 (Saturday) and Thursday
  1801.     you get back 5!
  1802.     If you specify the 22.1.1994 and Saturday you get back 0
  1803.     (the same day)!
  1804.  
  1805.    INPUTS
  1806.     day     - day of the date
  1807.     month   - month of the date
  1808.     year    - year of the date
  1809.     weekday - weekday to search for building difference
  1810.  
  1811.    RESULT
  1812.     days - The days after to the searched weekday.
  1813.  
  1814.    EXAMPLE
  1815.     ...
  1816.     days = JulianDaysAfterWeekday(22,1,1994,Thursday);
  1817.     ...
  1818.  
  1819.    NOTES
  1820.     It is better to use this function only from -7 to 1582!
  1821.  
  1822.    BUGS
  1823.     See JulianWeekday()!
  1824.  
  1825.    SEE ALSO
  1826.     JulianWeekday(),GregorianDaysAfterWeekday(),HeisDaysAfterWeekday()
  1827.  
  1828. Date/JulianDaysBeforeWeekday                     Date/JulianDaysBeforeWeekday
  1829.  
  1830.    NAME
  1831.     JulianDaysBeforeWeekday -- Returns the diff to the wday before. (V33)
  1832.  
  1833.    SYNOPSIS
  1834.     days = JulianDaysBeforeWeekday(day,month,year,weekday);
  1835.      d0                d0  d1    d2    d3
  1836.  
  1837.     unsigned short JulianDaysBeforeWeekday(const unsigned short day,
  1838.         const unsigned short month, const int year,
  1839.         const Weekdays weekday);
  1840.  
  1841.    FUNCTION
  1842.     Returns the days to the weekday before the specified date.
  1843.     So if you specify the 22.1.1994 (Saturday) and Thursday
  1844.     you get back 2!
  1845.     If you specify the 22.1.1994 and Saturday you get back 0
  1846.     (the same day)!
  1847.  
  1848.    INPUTS
  1849.     day     - day of the date
  1850.     month   - month of the date
  1851.     year    - year of the date
  1852.     weekday - weekday to search for building difference
  1853.  
  1854.    RESULT
  1855.     days - The days back to the searched weekday (0-6)
  1856.         If you get back 8 an error occurs!
  1857.  
  1858.    EXAMPLE
  1859.     ...
  1860.     days = JulianDaysBeforeWeekday(22,1,1994,Thursday);
  1861.     ...
  1862.  
  1863.    NOTES
  1864.     It is better to use this function only from -7 to 02.1582!
  1865.  
  1866.    BUGS
  1867.     See JulianWeekday()!
  1868.  
  1869.    SEE ALSO
  1870.     JulianWeekday(),GregorianDaysBeforeWeekday(),HeisDaysBeforeWeekday()
  1871.  
  1872. Date/JulianDaySmaller                                   Date/JulianDaySmaller
  1873.  
  1874.    NAME
  1875.     JulianDaySmaller -- Checks if date1 is smaller than date2. (V33)
  1876.  
  1877.    SYNOPSIS
  1878.     smaller = JulianDaySmaller(day1,month1,year1,day2,month2,year2);
  1879.       d0                d0    d1    d2    d3    d4    d5
  1880.  
  1881.     bool JulianDaySmaller(const unsigned short day1,
  1882.         const unsigned short month1, const int year1,
  1883.         const unsigned short day2, const unsigned short month2,
  1884.         const int year2);
  1885.  
  1886.    FUNCTION
  1887.     JulianDaySmaller test if date1 is smaller than date2.
  1888.  
  1889.    INPUTS
  1890.     day1   - day of the first date
  1891.     month1 - month of the first date
  1892.     year1  - year of the first date
  1893.     day2   - day of the second date
  1894.     month2 - month of the second month
  1895.     year2  - year of the second date
  1896.  
  1897.    RESULT
  1898.     smaller - This is TRUE is date1 < date2 otherwise it's FALSE.
  1899.  
  1900.    EXAMPLE
  1901.     ...
  1902.     if (JulianDaySmaller(18,9,1970,22,1,1994))
  1903.       printf("<\n");
  1904.     else
  1905.       printf(">=\n");
  1906.     ...
  1907.  
  1908.    NOTES
  1909.     It is better only to use this function for years from -7 to 1582!
  1910.  
  1911.    BUGS
  1912.     No known bugs.
  1913.  
  1914.    SEE ALSO
  1915.     GregorianDaySmaller(),HeisDaySmaller()
  1916.  
  1917. Date/JulianDiffDate                                       Date/JulianDiffDate
  1918.  
  1919.    NAME
  1920.     JulianDiffDate -- Returns the date for a diff to another date. (V33)
  1921.  
  1922.    SYNOPSIS
  1923.     JulianDiffDate(day,month,year,diffdays,dday,dmonth,dyear);
  1924.             d0   d1   d2     d3     a0    a1    a2
  1925.  
  1926.     void JulianDiffDate(const unsigned short day,
  1927.         const unsigned short month, const int year, int days,
  1928.         unsigned short *dday, unsigned short *dmonth, int *dyear);
  1929.  
  1930.    FUNCTION
  1931.     Returns the date which lies diffdays before/after the specified date.
  1932.  
  1933.    INPUTS
  1934.     day      - day of the date
  1935.     month    - month of the date
  1936.     year     - year of the date
  1937.     diffdays - difference to the date in days
  1938.  
  1939.    RESULT
  1940.     dday   - Destination day
  1941.     dmonth - Destination month
  1942.     dyear  - Destination year
  1943.  
  1944.    EXAMPLE
  1945.     ...
  1946.     JulianDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
  1947.     ...
  1948.  
  1949.    NOTES
  1950.     It is better to use this function only from -7 to 1582!
  1951.  
  1952.    BUGS
  1953.     unknown.
  1954.  
  1955.    SEE ALSO
  1956.     JulianDayDiff(),JulianMonthDays(),GregorianDiffDate(),HeisDiffDate()
  1957.  
  1958. Date/JulianLeapYear                                       Date/JulianLeapYear
  1959.  
  1960.    NAME
  1961.     JulianLeapYear -- Checks if a year is a leap year. (V33)
  1962.  
  1963.    SYNOPSIS
  1964.     leapyear = JulianLeapYear(year);
  1965.        d0               d0
  1966.  
  1967.     bool JulianLeapYear(const int year);
  1968.  
  1969.    FUNCTION
  1970.     JulianLeapYear checks if a year is a leap year in the julian calendar
  1971.     For years after Chr. it checks if the year is devideable by 4.
  1972.     For years before Chr. a leap year must have a modulo 4 value of 1
  1973.  
  1974.    INPUTS
  1975.     year - The year which should be checked (from -32768 to 32767)
  1976.         I think only values from -7 to 32767 are valid, because of
  1977.         the variant that was done on -8 by Augustus and other things!
  1978.  
  1979.    RESULT
  1980.     leapyear - TRUE if the year is a leap year, otherwise false.
  1981.  
  1982.    EXAMPLE
  1983.     ...
  1984.     if (JulianLeapYear(1994))
  1985.       printf("leap year!\n");
  1986.     else
  1987.       printf("no leap year!\n");
  1988.     ...
  1989.  
  1990.    NOTES
  1991.     A year is 365.25 days long!
  1992.     Use this function only for values from -7 to 1582!
  1993.  
  1994.    BUGS
  1995.     No known bugs.
  1996.  
  1997.    SEE ALSO
  1998.     GregorianLeapYear(),HeisLeapYear()
  1999.  
  2000. Date/JulianMonthDays                                     Date/JulianMonthDays
  2001.  
  2002.    NAME
  2003.     JulianMonthDays -- Gives back the number of days of a month. (V33)
  2004.  
  2005.    SYNOPSIS
  2006.     days = JulianMonthDays(month,year);
  2007.      d0            d0    d1
  2008.  
  2009.     unsigned short JulianMonthDays(const unsigned short month,
  2010.         const int year);
  2011.  
  2012.    FUNCTION
  2013.     JulianMonthDays gives you back the number of days a month in
  2014.     a specified year has.
  2015.  
  2016.    INPUTS
  2017.     month - The month from which you want to get the number of days.
  2018.     year  - The year in which the month is.
  2019.  
  2020.    RESULT
  2021.     days - The number of days the month uses, or 0 if you use
  2022.         a wrong month.
  2023.  
  2024.    EXAMPLE
  2025.     ...
  2026.     days = JulianMonthDays(1,1994);
  2027.     printf("Days of January 1994 : %d\n",days);
  2028.     ...
  2029.  
  2030.    NOTES
  2031.     It is better only to use this function for years from -7 to 09.1582!
  2032.  
  2033.    BUGS
  2034.     No known bugs.
  2035.  
  2036.    SEE ALSO
  2037.     JulianLeapYear(),GregorianMonthDays(),HeisMonthDays()
  2038.  
  2039. Date/JulianToJD                                               Date/JulianToJD
  2040.  
  2041.    NAME
  2042.     JulianToJD -- Returns the JD for a date. (V33)
  2043.  
  2044.    SYNOPSIS
  2045.     jd = JulianToJD(day,month,year);
  2046.     d0        d0   d1    d2
  2047.  
  2048.     unsigned long JulianToJD(const unsigned short day,
  2049.         const unsigned short month, const int year);
  2050.  
  2051.    FUNCTION
  2052.     Returns the JD for a Julian date.
  2053.  
  2054.    INPUTS
  2055.     day      - day of the date to convert
  2056.     month    - month of the date to convert
  2057.     year     - year of the date to convert
  2058.  
  2059.    RESULT
  2060.     jd - This is the JD
  2061.  
  2062.    EXAMPLE
  2063.     ...
  2064.     jd = JulianToJD(23,1,1994);
  2065.     ...
  2066.  
  2067.    NOTES
  2068.     It is better to use this function only from -7 to 1582!
  2069.  
  2070.    BUGS
  2071.     unknown.
  2072.  
  2073.    SEE ALSO
  2074.     JSYearToJD(),JYearToScaliger(),JulianDayDiff(),GregorianToJD(),
  2075.     HeisToJD()
  2076.  
  2077. Date/JulianWeek                                               Date/JulianWeek
  2078.  
  2079.    NAME
  2080.     JulianWeek -- Gets the weeknumber of a specified date. (V33)
  2081.  
  2082.    SYNOPSIS
  2083.     weeknr = JulianWeek(day,month,year);
  2084.       d0            d0    d1   d2
  2085.  
  2086.     unsigned short JulianWeek(const unsigned short day,
  2087.         const unsigned short month, const int year);
  2088.  
  2089.    FUNCTION
  2090.     JulianWeek gets the weeknumber for a specified date.
  2091.  
  2092.    INPUTS
  2093.     day   - day of the date
  2094.     month - month of the date
  2095.     year  - year of the date
  2096.  
  2097.    RESULT
  2098.     week - This is the number of the week the specified date lies in.
  2099.         If the first day in a new year is a Friday, Saturday or
  2100.         Sunday, this would be the last week of the last year!
  2101.         If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
  2102.         the 31.12. is a Monday, Tuesday or a Wednesday this is the
  2103.         first week of the next year!
  2104.  
  2105.    EXAMPLE
  2106.     ...
  2107.     weeknr = JulianWeek(4,10,1582);
  2108.     ...
  2109.  
  2110.    NOTES
  2111.     It is is better only to use this function for years from 0 to 1582!
  2112.  
  2113.    BUGS
  2114.     For years < 0 errors could occur.
  2115.  
  2116.    SEE ALSO
  2117.     GregorianWeek(),HeisWeek(),JulianWeekday(),JulianDayDiff()
  2118.  
  2119. Date/JulianWeekday                                         Date/JulianWeekday
  2120.  
  2121.    NAME
  2122.     JulianWeekday -- Gets the weekday of a specified date. (V33)
  2123.  
  2124.    SYNOPSIS
  2125.     weekday = JulianWeekday(day,month,year);
  2126.       d0             d0   d1   d2
  2127.  
  2128.     Weekdays JulianWeekday(const unsigned short day,
  2129.         unsigned short month, int year);
  2130.  
  2131.    FUNCTION
  2132.     JulianWeekday gets the weekday for a specified date.
  2133.  
  2134.    INPUTS
  2135.     day   - day of the date
  2136.     month - month of the date
  2137.     year  - year of the date
  2138.  
  2139.    RESULT
  2140.     weekday - This result is of type:
  2141.         Weekdays = (dayerr,Monday,Tuesday,Wednesday,Thursday,Friday,
  2142.         Saturday,Sunday);
  2143.         dayerr will show you, that an error occurs!
  2144.  
  2145.    EXAMPLE
  2146.     ...
  2147.     weekday = JulianWeekday(4,10,1582);
  2148.     if (weekday == dayerr)
  2149.       {
  2150.        ...
  2151.       }
  2152.     ...
  2153.  
  2154.    NOTES
  2155.     It is better only to use this function for years from 1 to 02.1582!
  2156.     In this version no dayerr will occur!
  2157.  
  2158.    BUGS
  2159.     For years <= 0 errors could occur, or systemcrashs(?).
  2160.  
  2161.    SEE ALSO
  2162.     GregorianWeekday(),HeisWeekday()
  2163.  
  2164. Date/JulianYearDays                                       Date/JulianYearDays
  2165.  
  2166.    NAME
  2167.     JulianYearDays -- Gives back the number of days in a year. (V33)
  2168.  
  2169.    SYNOPSIS
  2170.     days = JulianYearDays(year);
  2171.      d0               d0
  2172.  
  2173.     unsigned int JulianYearDays(const int year);
  2174.  
  2175.    FUNCTION
  2176.     JulianYearDays gives you back the number of days in
  2177.     a specified year.
  2178.  
  2179.    INPUTS
  2180.     year  - The year in which to count the days.
  2181.  
  2182.    RESULT
  2183.     days - The number of days the year uses.
  2184.  
  2185.    EXAMPLE
  2186.     ...
  2187.     days = JulianYearDays(1994);
  2188.     printf("Days of 1994 : %d\n",days);
  2189.     ...
  2190.  
  2191.    NOTES
  2192.     It is better only to use this function for years from -7 to 1581!
  2193.  
  2194.    BUGS
  2195.     No known bugs.
  2196.  
  2197.    SEE ALSO
  2198.     JulianMonthDays(),GregorianYearDays(),HeisYearDays()
  2199.  
  2200. Date/JYearToScaliger                                     Date/JYearToScaliger
  2201.  
  2202.    NAME
  2203.     JYearToScaliger -- Returns the year as Scaliger year. (V33)
  2204.  
  2205.    SYNOPSIS
  2206.     syear = JYearToScaliger(year);
  2207.      d0             d0
  2208.  
  2209.     unsigned int JYearToScaliger(const int year);
  2210.  
  2211.    FUNCTION
  2212.     Returns the Scaliger year.
  2213.  
  2214.    INPUTS
  2215.     year     - Julian year
  2216.  
  2217.    RESULT
  2218.     syear - The Scaliger year
  2219.  
  2220.    EXAMPLE
  2221.     ...
  2222.     syear = JYearToScaliger(1582);
  2223.     ...
  2224.  
  2225.    NOTES
  2226.     It is better to use this function only from -7 to 1582!
  2227.  
  2228.    BUGS
  2229.     unknown.
  2230.  
  2231.    SEE ALSO
  2232.     GYearToScaliger(),HYearToScaliger()
  2233.  
  2234. Date/LMT                                                             Date/LMT
  2235.  
  2236.    NAME
  2237.     LMT -- Calculates your local time in your timezone (V33)
  2238.  
  2239.    SYNOPSIS
  2240.     secs = LMT(secs,meridian,pos);
  2241.      d0        d0     d1    d2
  2242.  
  2243.     unsigned long LMT(const unsigned long secs,
  2244.         const float meridiandegree, const float posdegree);
  2245.  
  2246.    FUNCTION
  2247.     Calculates your Local Mean Time of your place!
  2248.  
  2249.    INPUTS
  2250.     secs     - Seconds of the running day (hours*3600+min*60+sec)
  2251.     meridian - Degrees of your timezone-meridian
  2252.     pos      - Degrees of your place
  2253.  
  2254.    RESULT
  2255.     secs - Local seconds of the running day
  2256.  
  2257.    EXAMPLE
  2258.     ...
  2259.     secs = LMT(76080,-15.0,-8.923055556);
  2260.     ...
  2261.  
  2262.    NOTES
  2263.     none
  2264.  
  2265.    BUGS
  2266.     No errorcheck, if you put in valid degrees (-180 to +180)
  2267.  
  2268.    SEE ALSO
  2269.  
  2270.  
  2271. Date/MJDtoJD                                                     Date/MJDtoJD
  2272.  
  2273.    NAME
  2274.     MJDtoJD -- Switches from MJD to JD. (V33)
  2275.  
  2276.    SYNOPSIS
  2277.     jd = MJDtoJD(mjd);
  2278.     d0         d0
  2279.  
  2280.     unsigned long MJDtoJD(const unsigned long mjd);
  2281.  
  2282.    FUNCTION
  2283.     Returns the Julianday of a Modified Julianday.
  2284.  
  2285.    INPUTS
  2286.     mjd - Modified Julianday
  2287.  
  2288.    RESULT
  2289.     jd - The Julianday
  2290.  
  2291.    EXAMPLE
  2292.     ...
  2293.     jd = JDtoMJD(49353);
  2294.     ...
  2295.  
  2296.    NOTES
  2297.     none
  2298.  
  2299.    BUGS
  2300.     unknown.
  2301.  
  2302.    SEE ALSO
  2303.     MJDtoJD()
  2304.  
  2305. Date/ScaligerYearToG                                     Date/ScaligerYearToG
  2306.  
  2307.    NAME
  2308.     ScaligerYearToG -- Returns the Scaliger year as Gregorian year. (V33)
  2309.  
  2310.    SYNOPSIS
  2311.     year = ScaligerYearToG(syear);
  2312.      d0            d0
  2313.  
  2314.     int ScaligerYearToG(const unsigned int syear);
  2315.  
  2316.    FUNCTION
  2317.     Returns the Gregorian year of a Scaliger year.
  2318.  
  2319.    INPUTS
  2320.     syear     - Scaliger year
  2321.  
  2322.    RESULT
  2323.     year - The Gregorian year
  2324.  
  2325.    EXAMPLE
  2326.     ...
  2327.     year = ScaligerYearToG(6400);
  2328.     ...
  2329.  
  2330.    NOTES
  2331.     It is better to use this function only from 4707 to 7981!
  2332.  
  2333.    BUGS
  2334.     unknown.
  2335.  
  2336.    SEE ALSO
  2337.     ScaligerYearToJ(),ScaligerYearToH()
  2338.  
  2339. Date/ScaligerYearToH                                     Date/ScaligerYearToH
  2340.  
  2341.    NAME
  2342.     ScaligerYearToH -- Returns the Scaliger year as Heis year. (V33)
  2343.  
  2344.    SYNOPSIS
  2345.     year = ScaligerYearToH(syear);
  2346.      d0            d0
  2347.  
  2348.     int ScaligerYearToH(const unsigned int syear);
  2349.  
  2350.    FUNCTION
  2351.     Returns the Heis year of a Scaliger year.
  2352.  
  2353.    INPUTS
  2354.     syear     - Scaliger year
  2355.  
  2356.    RESULT
  2357.     year - The Heis year
  2358.  
  2359.    EXAMPLE
  2360.     ...
  2361.     year = ScaligerYearToH(7000);
  2362.     ...
  2363.  
  2364.    NOTES
  2365.     It is better to use this function only from 4707 to 7981!
  2366.  
  2367.    BUGS
  2368.     unknown.
  2369.  
  2370.    SEE ALSO
  2371.     ScaligerYearToJ(),ScaligerYearToG()
  2372.  
  2373. Date/ScaligerYearToJ                                     Date/ScaligerYearToJ
  2374.  
  2375.    NAME
  2376.     ScaligerYearToJ -- Returns the Scaliger year as Julian year. (V33)
  2377.  
  2378.    SYNOPSIS
  2379.     year = ScaligerYearToJ(syear);
  2380.      d0            d0
  2381.  
  2382.     int ScaligerYearToJ(const unsigned int syear);
  2383.  
  2384.    FUNCTION
  2385.     Returns the Julian year of a Scaliger year.
  2386.  
  2387.    INPUTS
  2388.     syear     - Scaliger year
  2389.  
  2390.    RESULT
  2391.     year - The Julian year
  2392.  
  2393.    EXAMPLE
  2394.     ...
  2395.     year = ScaligerYearToJ(4800);
  2396.     ...
  2397.  
  2398.    NOTES
  2399.     It is better to use this function only from 4707 to 6295!
  2400.  
  2401.    BUGS
  2402.     unknown.
  2403.  
  2404.    SEE ALSO
  2405.     ScaligerYearToG(),ScaligerYearToH()
  2406.  
  2407. Date/SecToTime                                                 Date/SecToTime
  2408.  
  2409.    NAME
  2410.     SecToTime -- Returns the time from seconds (V33)
  2411.  
  2412.    SYNOPSIS
  2413.     SecToTime(secs,hour,min,sec);
  2414.            d0   a0   a1  a2
  2415.  
  2416.     SecToTime(unsigned long secs, unsigned short *hour,
  2417.         unsigned short *min, unsigned short *sec);
  2418.  
  2419.    FUNCTION
  2420.     Gives you back the time from the specified seconds
  2421.  
  2422.    INPUTS
  2423.     secs - Time in seconds
  2424.  
  2425.    RESULT
  2426.     hour - hours (0-23)
  2427.     min  - minutes (0-59)
  2428.     sec  - seconds (0-59)
  2429.  
  2430.    EXAMPLE
  2431.     ...
  2432.     SecToTime(76860,&hour,&min,&sec);
  2433.     ...
  2434.  
  2435.    NOTES
  2436.     Don't forget to convert 24h time to AM/PM time if needed!
  2437.  
  2438.    BUGS
  2439.     No errorcheck, if you use a valid time
  2440.  
  2441.    SEE ALSO
  2442.     TimeToSec()
  2443.  
  2444. Date/TimeToJD                                                   Date/TimeToJD
  2445.  
  2446.    NAME
  2447.     TimeToJD -- Returns the JD for a time. (V33)
  2448.  
  2449.    SYNOPSIS
  2450.     jd = TimeToJD(hour,min,sec);
  2451.     d0           d0   d1  d2
  2452.  
  2453.     float TimeToJD(const unsigned short hour, const unsigned short min,
  2454.         const unsigned short sec);
  2455.  
  2456.    FUNCTION
  2457.     Returns the JD for a specified time.
  2458.  
  2459.    INPUTS
  2460.     hour - hour of the time to convert
  2461.     min  - minute of the time to convert
  2462.     sec  - sec. of the time to convert
  2463.  
  2464.    RESULT
  2465.     jd - This is the JD time
  2466.  
  2467.    EXAMPLE
  2468.     ...
  2469.     jd = TimeToJD(16,33,0);
  2470.     ...
  2471.  
  2472.    NOTES
  2473.     none
  2474.  
  2475.    BUGS
  2476.     There is no check, if the specified time is a valid time!
  2477.  
  2478.    SEE ALSO
  2479.     JDToTime()
  2480.  
  2481. Date/TimeToSec                                                 Date/TimeToSec
  2482.  
  2483.    NAME
  2484.     TimeToSec -- Returns the time in seconds (V33)
  2485.  
  2486.    SYNOPSIS
  2487.     secs = TimeToSec(hour,min,sec);
  2488.      d0          d0   d1  d2
  2489.  
  2490.     unsigned long TimeToSec(const unsigned short hour,
  2491.         const unsigned short min, const unsigned short sec);
  2492.  
  2493.    FUNCTION
  2494.     Gives you back the time in seconds
  2495.  
  2496.    INPUTS
  2497.     hour - hours you want (0-23)
  2498.     min  - minutes you want (0-59)
  2499.     sec  - seconds you want (0-59)
  2500.  
  2501.    RESULT
  2502.     secs - Time in seconds
  2503.  
  2504.    EXAMPLE
  2505.     ...
  2506.     secs = TimeToSec(21,15,00);
  2507.     ...
  2508.  
  2509.    NOTES
  2510.     Don't forget to convert AM/PM time to 24h time!
  2511.  
  2512.    BUGS
  2513.     No errorcheck, if you use a valid time
  2514.  
  2515.    SEE ALSO
  2516.     SecToTime()
  2517.  
  2518. Date/TimeZoneFactor                                       Date/TimeZoneFactor
  2519.  
  2520.    NAME
  2521.     TimeZoneFactor -- Returns the value you have to add to GMT time (V33)
  2522.  
  2523.    SYNOPSIS
  2524.     addhours = TimeZoneFactor(degrees);
  2525.        d0                d0
  2526.  
  2527.     short TimeZoneFactor(const short degree);
  2528.  
  2529.    FUNCTION
  2530.     This gives you the hours you have to add to GMT time,
  2531.     specified on the fact, that a timezone is 15 degrees
  2532.     and that GMT is centered on 0 degrees!
  2533.  
  2534.    INPUTS
  2535.     degrees - Position of timezone you live in
  2536.     (from -180 east to +180 west)
  2537.  
  2538.    RESULT
  2539.     addhours - Time to add to GMT time to get your locale zone time
  2540.         (-12 to +12)
  2541.  
  2542.    EXAMPLE
  2543.     ...
  2544.     addhours = TimeZoneFactor(-8);
  2545.     ...
  2546.  
  2547.    NOTES
  2548.     none
  2549.  
  2550.    BUGS
  2551.     No errorcheck, if you put in valid degrees (-180 to +180)
  2552.     Only full degrees are supportet, keep sure that you
  2553.     round in the right way for 0.x degree places
  2554.     I am not sure about the correct +/- behaviour!!!
  2555.  
  2556.    SEE ALSO
  2557.  
  2558.  
  2559.